# -*- coding: utf-8 -*-
"""
@Time    : 2024/6/27 15:42 
@Author  : ZhangShenao 
@File    : basic.py 
@Desc    : Generator生成器
生成器是一个函数,这个函数的特殊之处在于它的return语句被yield语句替代
"""


# 定义一个生成器函数
def pow_of_two():
    # yield语句的作用和return语句有几分相似,都可以将结果返回
    # 不同在于,生成器函数执行至yield 语句,返回结果的同时记录下函数内的状态,下次执行这个生成器函数,将从上次退出的位置(yield的下一句代码)继续执行
    # 当生成器函数中的所有代码被执行完毕时,自动抛出StopIteration异常
    for exponent in range(0, 11):
        yield 2 ** exponent


# 使用生成器
p = pow_of_two()
print(next(p))
print(next(p))
print(next(p))
